package com.bjsxt.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bjsxt.domain.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bjsxt.dto.UserDto;
import com.bjsxt.model.RegisterParam;
import com.bjsxt.model.UserAuthForm;

import java.util.List;
import java.util.Map;

/**
* @date:2022/1/7 12:00
* @author:yang
*/
public interface UserService extends IService<User>{


        /**
         * 分页查询用户
         * @param page
         * @param mobile
         * @param userId
         * @param userName
         * @param realName
         * @param status
         * @return
         */
        Page<User> findByPage(Page<User> page, String mobile, Long userId, String userName, String realName, Integer status, Integer reviewStatus);

        /**
         * 查询用户邀请列表
         * @param page
         * @param userId
         * @return
         */
        Page<User> findDirectInvitePage(Page<User> page, Long userId);

        /**
         * 修改用户的审核状态
         * @param id
         * @param authStatus
         * @param authCode
         * @param remark
         */
        void updateUserAuthStatus(Long id, Byte authStatus, Long authCode, String remark);

        /**
         * 用户的实名认证
         * @param id
         * @param userAuthForm
         * @return
         */
        boolean identifyVerify(Long id, UserAuthForm userAuthForm);

        /**
         * 用户的高级认证
         * @param id
         * @param asList
         */
        void authUser(Long id, List<String> asList);

        /**
         * 查询用户邀请列表
         * @param userId
         * @return
         */
        List<User> getUserInvites(Long userId);

        /**
         * 通过用户id批量查询用户的基础信息
         * @param ids
         * @return
         */
        Map<Long, UserDto> getBasicUsers(List<Long> ids, String userName, String mobile);

        /**
         * 用户注册
         * @param registerParam
         * @return
         */
        boolean register(RegisterParam registerParam);
}
